package easy.trace.core.context;

import easy.trace.common.Span;
import easy.trace.core.dto.TransferParams;

/**
 * @author easy
 */
public interface TraceContext {

    /**
     * 服务名称
     *
     * @return
     */
    String getServiceId();

    /**
     * 方法名称
     *
     * @return
     */
    String getMethod();

    /**
     * 调用类型
     *
     * @return
     */
    String getEventType();

    /**
     * 调用方
     *
     * @return
     */
    boolean isCaller();

    /**
     * 被调用方
     *
     * @return
     */
    boolean isCalled();

    /**
     * 服务端口
     *
     * @return
     */
    int port();

    /**
     * 服务ip
     *
     * @return
     */
    String address();

    /**
     * 传递上下文
     *
     * @return
     */
    TransferParams getTransferParams();

    /**
     *
     * 传递上下文
     * @param span
     * @return
     */
    void setTransferParams(Span span);

}
